ORM(Object Relational Mapping)
객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 기술
애플리케이션과 데이터베이스 연결 시 SQL 언어가 아닌 애플리케이션 개발 언어로 데이터베이스에 접근할 수 있게 해주는 툴이다
왜 매핑이 필요할까?
객체지향 프로그래밍은 클래스를 사용하고, 관계형 데이터베이스는 테이블을 사용하여 두 모델 간에 불일치가 발생하게 된다.
이러한 문제를 ORM이 중간에서 객체 간의 관계를 바탕으로 RDB와 매핑하여 불일치를 해소할 수 있다
SQL을 직접 다룰 때의 문제점
-
반복적으로 코드를 작성해야 한다
모든 DB 작업에 대해 SQL문을 작성해야 하며, 반복적인 CRUD SQL 작성과 객체를 SQL에 매핑하는 코드를 작성하는 데 시간이 오래 걸린다 -
SQL 의존적 개발을 하게 된다
테이블에 column이 추가되며녀 모든 DAO의 SQL문 변경이 필요하다 -
패러다임의 불일치
개발 언어와 데이터베이스 언어의 지향 목적이 다르기 때문에 패러다임 불일치가 발생한다
이를 해소하기 위해 기발자가 중간에서 직접 코드를 작성해 매핑해야 한다
장점
SQL 문법 대신 애플리케이션의 개발 언어를 그대로 사용할 수 있게 함으로써, 개발 언어의 일관성과 가독성을 높여준다
단점
ORM만으로는 SQL의 모든 부분을 다루기 어렵다
종류
Python
- FlaskSQLAlcheny
- Django ORM
Node.js
- Sequalize
Java
- JPA